package main

import "fmt"

/*
单项管道:
	只写管道： var chan1 = make(chan<- int, 2)
	只读管道： var chan2 = make(<-chan int, 2)
双向管道： var chan3 = make(chan int, 2)

单项管道可定义在管道参数传递时，用于在某个任务函数中，只能对该管道进行读或写的操作
单项管道定义可以视为该管道在某个函数体内的方法约束规范
*/

// 只写
func writeChan(ch chan<- int) {
	for i := 0; i < 10; i++ {
		ch <- i
	}
	close(ch)
}

// 只读
func readChan(ch <-chan int) {
	for i := range ch {
		fmt.Println(i)
	}
}

func main() {
	var chan1 = make(chan int, 10)
	writeChan(chan1)
	readChan(chan1)
}
